package com.lxd.service;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import com.lxd.entity.TokenUserInfoDto;
import com.lxd.entity.query.FileQuery;
import com.lxd.entity.po.File;
import com.lxd.entity.vo.PaginationResultVO;

import org.springframework.web.multipart.MultipartFile;


/**
 * 文件表 业务接口
 */
public interface FileService {

	/**
	 * 根据条件查询列表
	 */
	List<File> findListByParam(FileQuery param);

	/**
	 * 根据条件查询列表
	 */
	Integer findCountByParam(FileQuery param);

	/**
	 * 分页查询
	 */
	PaginationResultVO<File> findListByPage(FileQuery param);

	/**
	 * 新增
	 */
	Integer add(File bean);

	/**
	 * 批量新增
	 */
	Integer addBatch(List<File> listBean);

	/**
	 * 批量新增/修改
	 */
	Integer addOrUpdateBatch(List<File> listBean);

	/**
	 * 多条件更新
	 */
	Integer updateByParam(File bean,FileQuery param);

	/**
	 * 多条件删除
	 */
	Integer deleteByParam(FileQuery param);

	/**
	 * 根据Id查询对象
	 */
	File getFileById(Long id);


	/**
	 * 根据Id修改
	 */
	Integer updateFileById(File bean,Long id);


	/**
	 * 根据Id删除
	 */
	Integer deleteFileById(Long id);

	/**
	 * 上传文件
	 * @param file
	 * @param relateType
	 * @param relateId
	 * @param tokenUserInfoDto
	 */
	void upload(MultipartFile file,Integer relateType,Integer relateId,TokenUserInfoDto tokenUserInfoDto);

	/**
	 * 获取最新的文件URL
	 */
//	String getLatestFile();

	/**
	 * 获取文件列表
	 */
	PaginationResultVO<File> getFileList(FileQuery query);

	/**
	 * 删除文件
	 */
	void deleteFile(Long id);

	/**
	 * 获取最新的几张图片URL
	 * @param limit 获取数量
	 * @return 图片URL列表
	 */
	List<String> getLatestImages(int limit);

	/**
	 * 获取关联内容的图片
	 * @param relatedId 关联ID
	 * @param relatedType 关联类型（0：活动，1：新闻）
	 * @return 图片URL列表
	 */
	List<String> getImagesByRelatedId(Long relatedId, Integer relatedType);

	/**
	 * 获取关联内容的最新图片
	 * @param relatedId 关联ID
	 * @param relatedType 关联类型（0：活动，1：新闻）
	 * @return 图片URL
	 */
	String getLatestImageByRelatedId(Long relatedId, Integer relatedType);
}